package saee.dao;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Query;

import saee.modelo.Empresa;
import saee.modelo.Vaga;
import saee.util.JPAUtil;

public class VagaDAO extends GenericDAO {

	public Vaga buscaPeloId(Integer id) {

		em = new JPAUtil().getEntityManager();
		em.getTransaction().begin();

		Vaga vaga = new Vaga();

		try {
			vaga = em.find(Vaga.class, id);

		} catch (Exception e) {
			e.printStackTrace();
			em.getTransaction().rollback();
		} finally {
			em.close();
		}
		return vaga;
	}

	@SuppressWarnings("unchecked")
	public List<Vaga> listarTodosPesquisa(String texto) {
		em = new JPAUtil().getEntityManager();
		boolean r = false;
		List<Vaga> vagas = new ArrayList<Vaga>();
		try {
			em.getTransaction().begin();
			Query query = em
					.createQuery("Select vaga from Vaga vaga where vaga.titulo LIKE :texto " +
							"or vaga.requisitos LIKE :texto  " +
							"or vaga.beneficios LIKE :texto  " +
							"or vaga.atividades LIKE :texto " +
							"or vaga.empresa.nome LIKE :texto ");
			query.setParameter("texto", "%" + texto + "%");
			vagas = query.getResultList();
		} catch (Exception e) {
			e.printStackTrace();
			em.getTransaction().rollback();
		} finally {
			em.close();
			// factory.close();
		}

		return vagas;

	}

	
	@SuppressWarnings("unchecked")
	public List<Vaga> listarTodosPorEmpresa(Empresa empresa) {
		em = new JPAUtil().getEntityManager();
		boolean r = false;
		List<Vaga> vagas = new ArrayList<Vaga>();
		try {
			em.getTransaction().begin();
			Query query = em
					.createQuery("Select vaga from Vaga vaga where vaga.empresa =:empresa");
			query.setParameter("empresa", empresa);
			vagas = query.getResultList();
		} catch (Exception e) {
			e.printStackTrace();
			em.getTransaction().rollback();
		} finally {
			em.close();
			// factory.close();
		}

		return vagas;

	}
	
	@SuppressWarnings("unchecked")
	public List<Vaga> listarTodosPorEmpresaETexto(String texto, Empresa empresa) {
		em = new JPAUtil().getEntityManager();
		boolean r = false;
		List<Vaga> vagas = new ArrayList<Vaga>();
		try {
			em.getTransaction().begin();
			Query query = em
					.createQuery("Select vaga from Vaga vaga where vaga.empresa =:empresa and vaga.titulo LIKE :texto " +
							"or vaga.requisitos LIKE :texto  " +
							"or vaga.beneficios LIKE :texto  " +
							"or vaga.atividades LIKE :texto ");
			query.setParameter("texto", "%" + texto + "%");
			query.setParameter("empresa", empresa);
			vagas = query.getResultList();
		} catch (Exception e) {
			e.printStackTrace();
			em.getTransaction().rollback();
		} finally {
			em.close();
			// factory.close();
		}

		return vagas;

	}

}
